let tool = require('../../js/tool');

let app = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 骨架屏
    loading: true,

    bookingType: [
      {
        title: '支出',
        type: 'zc'
      },
      {
        title: '收入',
        type: 'sr'
      }
    ],

    // 收入/支付激活下标
    typeIndex: 0,

    // 账户选择激活下标
    accountIndex: -1,

    // 子分类激活下标
    activeIndex: 0,

    // 子类型的页码
    page: -1,

    // 当前页的下标
    iconIndex: -1,

    accountList: [
      {
        name: '现金',
        type: 'xj'
      },
      {
        name: '支付宝',
        type: 'zfb'
      }, 
      {
        name: '微信',
        type: 'wx'
      }, 
      {
        name: '信用卡',
        type: 'xyk'
      },
      {
        name: '储蓄卡',
        type: 'cxk'
      }
      ],

    subTypes: [],

    typeCount: 10,

    // 当前日期
    currentDate: '',

    // 选择日期
    date: '选择日期',

    // 金额
    money: '',

    // 备注
    comment: '',

    // 轮播索引
    swiperIndex: 0,

    // 用户是否已授权
    isAuth: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.findBookingSubType();

    // 格式化日期
    let date = new Date();
    this.data.currentDate = tool.formatDate(date, 'yyyy-MM-dd');
    this.setData({
      currentDate: this.data.currentDate
    })
  },

  onShow() {
    this.setData({
      isAuth: app.globalData.isActive
    })
  },

  // 切换(收入-支出),账户类型
  toggleBookingType(e) {
    let index = e.currentTarget.dataset.index;

    let key = e.currentTarget.dataset.key;

    if (index == this.data[key]) {
      return;
    }

    if (key === 'typeIndex') {
      this.data.swiperIndex = index;
      this.data[key] = index;
      this.setData({
        swiperIndex: index,
        [key]: index
      })
    }

    this.data[key] = index;

    this.setData({
      [key]: index,
    })
  },

  // 切换轮播图
  toggleSwiper(e) {
    this.data.typeIndex = e.detail.current;
    this.setData({
      typeIndex: e.detail.current
    })
  },

  // 切换子类型
  toggleIcon(e) {
    let index = e.currentTarget.dataset.index;

    let page = e.currentTarget.dataset.page;

    let currentIcon = this.data.subTypes[page][index];

    let isHas = false;

    // 将其他的激活状态去除
    for (let i = 0; i < this.data.subTypes.length; i++) {
      let iconData = this.data.subTypes[i];
      for (let j = 0; j < iconData.length; j++) {
        if (iconData[j].isActive) {
          iconData[j].isActive = false;
          isHas = true;
          break;
        }
      }

      if (isHas) {
        break;
      }
    }

    currentIcon.isActive = true;
    
    this.setData({
      subTypes: this.data.subTypes,
      page,
      iconIndex: index
    })
  },

  // 查询记账子类型
  findBookingSubType() {
    wx.showLoading({
      title: '拼命加载中...',
      mask: true
    })
    wx.cloud.callFunction({
      // 云函数名称
      name: 'find_data',

      // 参数
      data: {
        // 集合名称
        listName: 'booking_icons'
      }
    }).then(res => {
      wx.hideLoading();
      console.log(res);
      let typeData = [];
      for (let i = 0; i < res.result.data.length; i += this.data.typeCount) {
        let types = res.result.data.slice(i, i + this.data.typeCount);
        typeData.push(types);
        this.setData({
          subTypes: typeData,
          loading: false
        })
      }
    }).catch(err => {
      wx.hideLoading();
      console.log(err);
    })
  },

  // 设置输入框的值
  setValue(e) {
    let key = e.currentTarget.dataset.key;

    let value = e.detail.value;

    if (key == 'comment' && /[<>]/.test(value)) {
      wx.showToast({
        title: '备注不包含<>符号',
        icon: 'none',
        duration: 2000
      });

      this.setData({
        [key]: ''
      });

      return;
    }

    this.setData({
      [key]: e.detail.value
    })
    // console.log(this.data[key]);
  },

  // 添加记账数据
  createBooking(data) {
    wx.showLoading({
      title: '拼命加载中...',
      mask: true
    })
    wx.cloud.callFunction({
      name: 'create_data',
      data
    }).then(res => {
      wx.hideLoading();
      console.log(res);
      this.data.subTypes[this.data.page][this.data.iconIndex].isActive = false;
      this.setData({
        // 选择日期
        date: '选择日期',

        // 金额
        money: '',

        // 备注
        comment: '',

        // 子类型的页码
        page: -1,

        // 当前页的下标
        iconIndex: -1,

        // 账户选择激活下标
        accountIndex: -1,

        subTypes: this.data.subTypes
      });

      wx.showToast({
        title: '保存成功',
        icon: 'none',
        duration: 2000
      });
    }).catch(err => {
      wx.hideLoading();
      console.log(err);
    })
  },
  
  save() {
    // 判断是否选择子类型
    if (this.data.page == -1 && this.data.iconIndex == -1) {
      return wx.showToast({
        title: '选择记账类型',
        icon: 'none',
        duration: 2000
      });
    }

    // 判断是否选择账户类型
    if (this.data.accountIndex == -1) {
      return wx.showToast({
        title: '选择账户类型',
        icon: 'none',
        duration: 2000
      });
    }

    // 判断是否选择日期
    if (this.data.date == '选择日期') {
      return wx.showToast({
        title: '选择日期',
        icon: 'none',
        duration: 2000
      });
    }

    // 判断是否填写金额
    if (!this.data.money) {
      return wx.showToast({
        title: '填写金额',
        icon: 'none',
        duration: 2000
      });
    }

    // 记账数据
    let data = {
      date: this.data.date,
      money: this.data.money,
      comment: this.data.comment,
      listName: 'booking'
    }

    // 获取收入-支出类型
    data.mainType = this.data.bookingType[this.data.typeIndex];

    // 获取子类型
    data.subType = this.data.subTypes[this.data.page][this.data.iconIndex];

    // 获取账户类型
    data.account = this.data.accountList[this.data.accountIndex];

    this.createBooking(data);
  },

  getUserInfo(res) {
      console.log(res);
      if (res.detail.userInfo) {
        app.globalData.isAuth = true;
        this.setData({
          isAuth: true
        })
      }
  },

})